/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package graf;

import java.util.ArrayList;

/**
 *
 * @author marek
 */
public class SciezkiProsteAlgorytm implements Pokrycie {

    Graf graf;

    public SciezkiProsteAlgorytm(Graf graf) {
        this.graf = graf;
    }

    public ArrayList<Sciezka> tworzPokrycie() {

        ArrayList<Sciezka> zbiorSciezek = new ArrayList<Sciezka>();

        for (Wierzcholek w : graf.getWierzcholki()) {
            Sciezka s = new Sciezka();
            s.dodajNaKoniec(w);
            zbiorSciezek.add(s);
            
            pokrywaj(zbiorSciezek, s);
        }

        return zbiorSciezek;
    }

    public void pokrywaj(ArrayList<Sciezka> zbior, Sciezka s) {
        if (s.pierwszy() == s.ostatni() && s.dlugoscSciezki() > 1) {
            
            return;
        }

        Wierzcholek w = s.ostatni();

        for (WierzcholekPlusPlus wTemp : w.getSasiedzi()) {
            if (!s.czyNaSciezce(wTemp.getWierzcholek()) || s.pierwszy() == wTemp.getWierzcholek()) {
                Sciezka newS = new Sciezka(s);
                newS.dodajNaKoniec(wTemp.getWierzcholek());
                zbior.add(newS);
                pokrywaj(zbior, newS);
            } 
        }
    }
}
